The increasing demand for robust computer security has led to widespread use of cryptography in mainstream computer systems and networks, along with the development of increasingly sophisticated and secure modern cryptography approaches. Cryptography often involves computationally demanding operations, particularly as the sophistication and security of modern cryptography continues to increase. For example, RSA encryption is a widely used form of public key or asymmetric cryptography, and is implemented using operations that involve modular exponentiation, which can be a computationally demanding operation. In some cases, modular exponentiation can be implemented using a series of multiply and square operations. Performing these multiply and square operations using a generic multiplier circuit is inefficient, however, as it results in generation and accumulation of redundant partial products for square operations.